﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace FlowerPower
{
    public partial class frmVaelgVare : Form
    {
        Kunde selectedKunde;
        DBcontroller minController = new DBcontroller();
        int antalVareIalt = 0;
        int subtotal = 0;
        int totalUdenMoms;

        public frmVaelgVare(Kunde selectedKunde)
        {
            
            this.selectedKunde = selectedKunde;
            InitializeComponent();
            lblKundenavn.Text = selectedKunde.Navn;
            lblKundenummer.Text = selectedKunde.Kundenummer.ToString();

            
            List<Varegruppe> varegrupper = new List<Varegruppe>();
            varegrupper = minController.IndlaesVaregrupper();
            foreach (Varegruppe item in varegrupper)
            {
                cmbVaregruppe.Items.Add(item.Navn);
            }
            lblKundensRabatProcent.Text = selectedKunde.Rabat.ToString();
        }

        private void frmVaelgVare_Load(object sender, EventArgs e)
        {

        }

        private void cmbVaregruppe_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmbFroetype.Items.Clear();
            List<Froetype> froetyper = new List<Froetype>();
           
            froetyper = minController.IndlaesFroetyperUdfraKategori(cmbVaregruppe.SelectedItem.ToString());
            foreach (Froetype item in froetyper)
            {
                cmbFroetype.Items.Add(item.Navn);
            }
        }

        private void cmbFroetype_SelectedIndexChanged(object sender, EventArgs e)
        {
            lvVarer.Items.Clear();
            List<Vare> mineVarer = new List<Vare>();
            mineVarer = minController.IndlaesVareUdfraFroetype(cmbFroetype.SelectedItem.ToString());
            foreach (Vare item in mineVarer)
            {
                string[] str = { item.Varenummer.ToString(), item.Varenavn.ToString(), item.Varepris.ToString() };
                ListViewItem lvItem = new ListViewItem(str);
                lvVarer.Items.Add(lvItem);
            }
            lvVarer.Update();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int varenummer = Convert.ToInt32(lvVarer.FocusedItem.SubItems[0].Text);
            string varenavn = lvVarer.FocusedItem.SubItems[1].Text;
            int varepris = Convert.ToInt32(lvVarer.FocusedItem.SubItems[2].Text);

            int antal = 1;
            string[] str = { antal.ToString(), varenummer.ToString(), varenavn, varepris.ToString() };
            ListViewItem lvItem = new ListViewItem(str);
            lvKurv.Items.Add(lvItem);
            antalVareIalt += 1;
            subtotal += varepris;
            lblSubtotal.Text = subtotal.ToString();
            lblAntalVarerIalt.Text = antalVareIalt.ToString();

            int rabat = subtotal * Convert.ToInt32(selectedKunde.Rabat) / 100;
            lblUdregnetRabatAfSamletPris.Text = rabat.ToString();

            totalUdenMoms = (subtotal - rabat);
            lblPrisUdenMoms.Text = totalUdenMoms.ToString();

            int totalMedMoms = (totalUdenMoms * 25 / 100) + totalUdenMoms;
            lblPrisMedMoms.Text = totalMedMoms.ToString();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            int varepris = Convert.ToInt32(lvKurv.FocusedItem.SubItems[3].Text);
            foreach (ListViewItem item in lvKurv.Items)
            {
                if (item.Selected)
                {
                    lvKurv.Items.Remove(item);
                }
            }

            //lvKurv.Items.Remove();
            antalVareIalt -= 1;
            subtotal -= varepris;
            lblSubtotal.Text = subtotal.ToString();
            lblAntalVarerIalt.Text = antalVareIalt.ToString();

            int rabat = subtotal * Convert.ToInt32(selectedKunde.Rabat) / 100;
            lblUdregnetRabatAfSamletPris.Text = rabat.ToString();

            totalUdenMoms = (subtotal - rabat);
            lblPrisUdenMoms.Text = totalUdenMoms.ToString();

            int totalMedMoms = (totalUdenMoms * 25 / 100) + totalUdenMoms;
            lblPrisMedMoms.Text = totalMedMoms.ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int ordrenummer;
            int kundenummer = Convert.ToInt32(lblKundenummer.Text);
           // string ordredatoStr = String.Format("{0:s}", DateTime.Now);
            DateTime ordredato = new DateTime(2011, 05, 05, 15, 50, 55);
            minController.OpretOrdre(kundenummer, ordredato);

            ordrenummer = minController.HentNyesteOrdrenummer();

            foreach (ListViewItem item in lvKurv.Items)
            {
                int varenummer = Convert.ToInt32(item.SubItems[1].Text);
                minController.OpretOrdreLinie(varenummer, ordrenummer);
            }
            minController.OpretFaktura(ordrenummer);
            Kunde fakturaKunde = minController.IndlaesKundeUdfraKundenummer(kundenummer);
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Title = "Gem Faktura";
            saveFileDialog1.Filter = "Tekst-fil (*.txt)|*.txt";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                    StreamWriter fakturaTekst = new StreamWriter(myStream);

                    fakturaTekst.WriteLine("FAKTURA - " + ordredato);
                    fakturaTekst.WriteLine("\n\n");
                    fakturaTekst.WriteLine("Kundenr: " + kundenummer);
                    fakturaTekst.WriteLine(fakturaKunde.Navn);
                    fakturaTekst.WriteLine(fakturaKunde.Adresse);
                    fakturaTekst.WriteLine(fakturaKunde.Postnummer.ToString() + " " + minController.IndlaesByUdfraPostnummer(fakturaKunde.Postnummer));
                    fakturaTekst.WriteLine("\n\n");
                    fakturaTekst.WriteLine("VARER");
                    fakturaTekst.WriteLine("ANTAL \t VARENUMMER \t NAVN \t\t\t\t PRIS");
                    fakturaTekst.WriteLine("");
                    foreach (ListViewItem item in lvKurv.Items)
                    {
                        string antal = Convert.ToString(item.SubItems[0].Text);
                        string varenummer = Convert.ToString(item.SubItems[1].Text);
                        string navn = item.SubItems[2].Text;
                        string pris = Convert.ToString(item.SubItems[3].Text);
                        fakturaTekst.WriteLine(antal + "    \t" + varenummer + "\t" + navn + "\t\t\t\t" + pris);
                    }
                    fakturaTekst.WriteLine("\n");
                    fakturaTekst.WriteLine("Rabat % = " + lblKundensRabatProcent.Text + "%");
                    fakturaTekst.WriteLine("Rabat Kr. = " + lblUdregnetRabatAfSamletPris.Text + "Kr.");
                    fakturaTekst.WriteLine("Ialt ex. Moms = " + lblPrisUdenMoms.Text + "Kr.");
                    fakturaTekst.WriteLine("Ialt inkl. Moms = " + lblPrisMedMoms.Text + "Kr.");
                    fakturaTekst.Close();
                    myStream.Close();
                }
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        
    }
}
